home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / HAM_RAD / PROPAGAT / 1004A.ZIP / MINIMUFX.BAS < prev    next >
BASIC Source File  |  1987-05-12  |  13KB  |  338 lines

  1. 5 GOTO 140
  2. 10 REM MINIMUF.BAS   VERSION 3.5
  3. 15 REM change lines 300 and 2680 for your station
  4. 20 REM SOURCE: QEX 21 NOVEMBER 1983
  5. 30 REM ADAPTATION BY JOHN E. ANDERSON,   WD4MUO
  6. 40 REM   ***Banner subroutine at 4000 - 4490***
  7. 45 CLS:PRINT"Please WAIT":FOR T=0 TO 8000:NEXT
  8. 50 GOSUB 4000
  9. 140 REM ***SAMPLE DRIVER FOR MINIMUF 3.5***
  10. 150 REM ***INITIAL DATA***
  11. 160 CLS:KEY OFF
  12. 170 DIM M$(37),A$(4),M(12)
  13. 180 FOR I=1 TO 12
  14. 190 READ M(I)
  15. 200 NEXT
  16. 210 DATA 31,28,31,30,31,30,31,31,30,31,30,31
  17. 220 M$="JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC"
  18. 230 PI=3.141593
  19. 240 R0=PI/180
  20. 250 P1=2*PI
  21. 260 R1=180/PI
  22. 270 P0=PI/2
  23. 280 DEF FNACS(X)=-ATN(X/SQR(-X*X+1+1/2^50))+1.5708
  24. 290 X$=STRING$(79,61)
  25. 300 CS$="wa2tif":REM INSERT YOUR CALL SIGN
  26. 310 GOSUB 2380:REM ***TO PRINT SCREEN HEADER***
  27. 320 REM ***OPTION MENU***
  28. 330 PRINT:PRINT"PATH OPTIONS"
  29. 340 PRINT
  30. 350 PRINT 1,CS$;" to San Francisco"
  31. 360 PRINT 2,CS$;" to Rio de Janeiro"
  32. 370 PRINT 3,CS$;" to Buenos Aires"
  33. 380 PRINT 4,CS$;" to Lima, Peru"
  34. 390 PRINT 5,CS$;" to Hawaii"
  35. 400 PRINT 6,CS$;" to Japan"
  36. 410 PRINT 7,CS$;" to Sydney, Australia"
  37. 420 PRINT 8,CS$;" to Calcutta, India"
  38. 430 PRINT 9,CS$;" to Paris"
  39. 440 PRINT 10,CS$;" to Warsaw"
  40. 450 PRINT 11,CS$;" to Moscow"
  41. 460 PRINT 12,CS$;" to Tunis"
  42. 470 PRINT 13,CS$;" to Liberia"
  43. 480 PRINT 14,CS$;" to Kenya"
  44. 490 PRINT 15,CS$;" to Pretoria, U of SA"
  45. 500 PRINT 16,CS$;" to a Specified Point"
  46. 510 PRINT 17,"Between Specified Points":PRINT
  47. 520 INPUT "CHOICE?  Select by path number";CH
  48. 530 IF CH<1 OR CH>17 THEN CLS:LOCATE 12,30:PRINT "BAD CHOICE NUMBER":FOR X=1 TO 5000:NEXT:CLS:GOTO 310
  49. 540 GOSUB 2380  : REM  ***TO PRINT SCREEN HEADER***
  50. 550 IF CH=17 GOTO 560 ELSE 2670
  51. 560 REM   ***DATA INPUTS***
  52. 570 T$="Transmitter": R$="Receiver"
  53. 580 PRINT:INPUT "Transmitter Lat, Lon (`-' for East and South)";L1,W1
  54. 590 IF L1=>-90 AND L1<=90 THEN 620
  55. 600 PRINT "INVALID Latitude.  Must be in range (-90 to +90)"
  56. 610 GOTO 580
  57. 620 IF -360<=W1 AND W1<=360 THEN 650
  58. 630 PRINT "INVALID Longitude.  Must be in range (-360 to +360)"
  59. 640 GOTO 580
  60. 650 PRINT:INPUT "Receiver Lat, Lon (`-' for East and South)";L2,W2
  61. 660 IF -90<=L2 AND L2<=90 THEN 690
  62. 670 PRINT "INVALID Latitude.  Must be in range (-90 to +90)"
  63. 680 GOTO 650
  64. 690 IF -360<=W2 AND W2<=360 THEN 720
  65. 700 PRINT "INVALID Longitude.  Must be in range (-360 to +360)"
  66. 710 GOTO 650
  67. 720 PRINT:INPUT"DATE (Day, Month),Example 15,3 ";D6,MO
  68. 730 IF 1<=MO AND MO<=12 THEN 760
  69. 740 PRINT "INVALID Month.  Must be in range (1 to 12)"
  70. 750 GOTO 720
  71. 760 IF 1<=D6 AND D6<=M(MO) THEN 800
  72. 770 PRINT "INVALID Day.  Must be in range (1 to";M(MO);")"
  73. 780 GOTO 720
  74. 790 REM   ***SUNSPOT DATA***
  75. 800 PRINT:INPUT "STATE SOURCE OF SOLAR ACTIVITY - S = sunspot #, F = solar flux ",AN1$
  76. 810 IF AN1$="S" OR AN1$="s" THEN 880 ELSE IF AN1$="F" OR AN1$="f" THEN 820 ELSE 800
  77. 820 INPUT "SMOOTHED MEAN 10.7-cm SOLAR FLUX  ";SF
  78. 830 IF SF<65 THEN PRINT"INVALID flux number.  Must be greater than 65.":GOTO 820
  79. 840 IF SF>245 THEN PRINT "RESULTS MAY BE INACCURATE FOR FLUX GREATER THAN 245."
  80. 850 GOSUB 2630: REM ***TO ROUTINE FOR FLUX TO SUNSPOT NUMBER CONVERSION***
  81. 860 PRINT"A FLUX OF";SF;"EQUATES TO A SUNSPOT NUMBER OF";S9
  82. 870 GOTO 930
  83. 880 PRINT:INPUT "SMOOTHED INTERNATIONAL SUNSPOT NUMBER = ";S9
  84. 890 IF S9>=0 THEN 930
  85. 900 PRINT"INVALID sunspot number.  Must be non-negative."
  86. 910 GOTO 880
  87. 920 REM  ***HARDCOPY FLAG***
  88. 930 PRINT:PRINT:INPUT"Want HARDCOPY printout?  Y/N ";AN$
  89. 940 IF AN$="Y" OR AN$="y" THEN LP=1 ELSE IF AN$="N" OR AN$="n" THEN LP=0 ELSE GOTO 930
  90. 950 REM  ***THRESHOLD FLAG***
  91. 960 PRINT:PRINT:INPUT"Want FLAG on MUF above given frequency?  Y/N ";TA$
  92. 970 IF TA$="Y" OR TA$="y" THEN TA=1 ELSE IF TA$="N" OR TA$="n" THEN TA=0 ELSE GOTO 960
  93. 980 IF TA=1 THEN INPUT"SPECIFY frequency, in MHz ";TAM
  94. 990 CLS
  95. 1000 A$=MID$(M$,3*MO-2,3)
  96. 1010 GOSUB 2380: REM  ***TO PRINT SCREEN HEADER***
  97. 1020 PRINT:PRINT"DATE:";D6;A$
  98. 1030 PRINT:PRINT T$;" Location" TAB(43) R$;" Location"
  99. 1040 PRINT" LATITUDE:";L1;"  LONGITUDE:";W1; TAB(43) " LATITUDE:";L2;"  LONGITUDE:";W2
  100. 1050 PRINT:PRINT"SUNSPOT NUMBER = ";S9
  101. 1060 PRINT
  102. 1070 COLOR 10
  103. 1080 PRINT"  MUF(MHz)    UTC";
  104. 1090 FOR I=0 TO 55 STEP 5
  105. 1100 COLOR 7:LOCATE ,19+I:PRINT I;
  106. 1110 NEXT
  107. 1120 COLOR 10
  108. 1130 PRINT"  ========    ===";
  109. 1140 COLOR 7
  110. 1150 LOCATE ,20:PRINT"|====|====|====|====|====|====|====|====|====|====|====|="
  111. 1160 IF LP=1 THEN GOSUB 2450 : REM ***TO PRINT HARDCOPY HEADER***
  112. 1170 L1=L1*R0
  113. 1180 W1=W1*R0
  114. 1190 L2=L2*R0
  115. 1200 W2=W2*R0
  116. 1210 FOR T5=0 TO 23
  117. 1220 GOSUB 1460  :REM  ***TO MAIN CALCULATION LOOP***
  118. 1230 REM  ***SCREEN AND PRINTER DATA PRINT***
  119. 1240 IF TA=0 THEN D$="*"
  120. 1250 IF TA=1 THEN IF J9=>TAM THEN D$="*" ELSE D$="."
  121. 1260 PRINT USING "    ##.#";J9;:PRINT TAB(15) T5 TAB(20) "|";
  122. 1270 LOCATE ,20+CINT(J9):COLOR 10:PRINT D$ :COLOR 7
  123. 1280 IF LP=1 THEN LPRINT USING"    ##.#";J9;:LPRINT TAB(15) T5 TAB(20) "|" TAB(20+CINT(J9)) D$
  124. 1290 NEXT
  125. 1300 REM  ***SCREEN AND PRINTER ENDING***
  126. 1310 LOCATE ,20:PRINT"|====|====|====|====|====|====|====|====|====|====|====|="
  127. 1320 FOR I=0 TO 55 STEP 5
  128. 1330 LOCATE ,19+I:PRINT I;
  129. 1340 NEXT
  130. 1350 IF LP=1 THEN 1360 ELSE 1400
  131. 1360 LPRINT TAB(20) "|====|====|====|====|====|====|====|====|====|====|====|="
  132. 1370 FOR I=0 TO 55 STEP 5
  133. 1380 LPRINT TAB(19+I) I;
  134. 1390 NEXT
  135. 1400 FL1=0:GOSUB 3000:  REM  ***Calc. of Bearing and Distance***
  136. 1410 GOSUB 3200:   REM    ***Print Bearing and Distance***
  137. 1420 BEEP:BEEP:BEEP:BEEP:IF LP=1 THEN LPRINT CHR$(12)
  138. 1430 GOTO 3300 : REM  ***Choice of continuing program***
  139. 1460 REM  ***MINIMUF 3.5 CALCULATION LOOP***
  140. 1470 K7=SIN(L1)*SIN(L2)+COS(L1)*COS(L2)*COS(W2-W1)
  141. 1480 IF K7=>-1 THEN 1510
  142. 1490 K7=-1
  143. 1500 GOTO 1530
  144. 1510 IF K7<=1 THEN 1530
  145. 1520 K7=1
  146. 1530 G1=FNACS(K7)
  147. 1540 K6=1.59*G1
  148. 1550 IF K6>=1 THEN 1570
  149. 1560 K6=1
  150. 1570 K5=1/K6
  151. 1580 J9=100
  152. 1590 FOR K1=1/(2*K6) TO 1-1/(2*K6) STEP .9999-1/K6
  153. 1600 IF K5=1 THEN 1620
  154. 1610 K5=.5
  155. 1620 P=SIN(L2)
  156. 1630 Q=COS(L2)
  157. 1640 A=(SIN(L1)-P*COS(G1))/(Q*SIN(G1))
  158. 1650 B=G1*K1
  159. 1660 C=P*COS(B)+Q*SIN(B)*A
  160. 1670 D=(COS(B)-C*P)/(Q*SQR(1-C^2))
  161. 1680 IF D=>-1 THEN 1710
  162. 1690 D=-1
  163. 1700 GOTO 1730
  164. 1710 IF D<=1 THEN 1730
  165. 1720 D=1
  166. 1730 D=FNACS(D)
  167. 1740 W0=W2+SGN(SIN(W1-W2))*D
  168. 1750 IF W0=>0 THEN 1770
  169. 1760 W0=W0+P1
  170. 1770 IF W0<P1 THEN 1790
  171. 1780 W0=W0-P1
  172. 1790 IF C=>-1 THEN 1820
  173. 1800 C=-1
  174. 1810 GOTO 1840
  175. 1820 IF C<=1 THEN 1840
  176. 1830 C=1
  177. 1840 L0=P0-FNACS(C)
  178. 1850 Y1=.0172*(10+(MO-1)*30.4+D6)
  179. 1860 Y2=.409*COS(Y1)
  180. 1870 K8=3.82*W0+12+.13*(SIN(Y1)+1.2*SIN(2*Y1))
  181. 1880 K8=K8-12*(1+SGN(K8-24))*SGN(ABS(K8-24))
  182. 1890 IF COS(L0+Y2)>-.26 THEN 1980
  183. 1900 K9=0
  184. 1910 G0=0
  185. 1920 M9=2.5*G1*K5
  186. 1930 IF M9<=P0 THEN 1950
  187. 1940 M9=P0
  188. 1950 M9=SIN(M9)
  189. 1960 M9=1+2.5*M9*SQR(M9)
  190. 1970 GOTO 2230
  191. 1980 K9=(-.26+SIN(Y2)*SIN(L0))/(COS(Y2)*COS(L0)+9.999999E-04)
  192. 1990 K9=12-ATN(K9/SQR(ABS(1-K9*K9)))*7.639437
  193. 2000 T=K8-K9/2+12*(1-SGN(K8-K9/2))*SGN(ABS(K8-K9/2))
  194. 2010 T4=K8+K9/2-12*(1+SGN(K8+K9/2-24))*SGN(ABS(K8+K9/2-24))
  195. 2020 C0=ABS(COS(L0+Y2))
  196. 2030 T9=9.7*C0^9.600001
  197. 2040 IF T9>.1 THEN 2060
  198. 2050 T9=.1
  199. 2060 M9=2.5*G1*K5
  200. 2070 IF M9<=P0 THEN 2090
  201. 2080 M9=P0
  202. 2090 M9=SIN(M9)
  203. 2100 M9=1+2.5*M9*SQR(M9)
  204. 2110 IF T4<T THEN 2140
  205. 2120 IF (T5-T)*(T4-T5)>0 THEN 2150
  206. 2130 GOTO 2280
  207. 2140 IF (T5-T4)*(T-T5)>0 THEN 2280
  208. 2150 T6=T5+12*(1+SGN(T-T5))*SGN(ABS(T-T5))
  209. 2160 G9=PI*(T6-T)/K9
  210. 2170 G8=PI*T9/K9
  211. 2180 U=(T-T6)/T9
  212. 2190 G0=C0*(SIN(G9)+G8*(EXP(U)-COS(G9)))/(1+G8*G8)
  213. 2200 G7=C0*(G8*(EXP(-K9/T9)+1))*EXP((K9-24)/2)/(1+G8*G8)
  214. 2210 IF G0=>G7 THEN 2230
  215. 2220 G0=G7
  216. 2230 G2=(1+S9/250)*M9*SQR(6+58*SQR(G0))
  217. 2240 G2=G2*(1-.1*EXP((K9-24)/3))
  218. 2250 G2=G2*(1+(1-SGN(L1)*SGN(L2))*.1)
  219. 2260 G2=G2*(1-.1*(1+SGN(ABS(SIN(L0))-COS(LO))))
  220. 2270 GOTO 2340
  221. 2280 T6=T5+12*(1+SGN(T4-T5))*SGN(ABS(T4-T5))
  222. 2290 G8=PI*T9/K9
  223. 2300 U=(T4-T6)/2
  224. 2310 U1=-K9/T9
  225. 2320 G0=C0*(G8*(EXP(U1)+1))*EXP(U)/(1+G8*G8)
  226. 2330 GOTO 2230
  227. 2340 IF G2>J9 THEN 2360
  228. 2350 J9=G2
  229. 2360 NEXT K1
  230. 2370 RETURN
  231. 2380 REM   ***SCREEN HEADER***
  232. 2390 CLS:COLOR 0,7
  233. 2400 PRINT X$
  234. 2410 PRINT TAB(37) "MINIMUF" STRING$(36,32)
  235. 2420 PRINT X$
  236. 2430 COLOR 7,0
  237. 2440 RETURN
  238. 2450 REM   ***HEADER FOR PRINTER***
  239. 2460 LPRINT CHR$(27);"E";:
  240. 2470 LPRINT X$
  241. 2480 LPRINT TAB(37)  "MINIMUF"
  242. 2490 LPRINT X$
  243. 2500 LPRINT CHR$(27);"F";
  244. 2510 LPRINT:LPRINT "DATE:";D6;A$
  245. 2520 LPRINT:LPRINT T$;" LOCATION" TAB(43) R$;" LOCATION"
  246. 2530 LPRINT " LATITUDE:";L1;"  LONGITUDE:";W1; TAB(43) " LATITUDE:";L2;"  LONGITUDE:";W2
  247. 2540 LPRINT:LPRINT "SUNSPOT NUMBER =";S9
  248. 2550 LPRINT
  249. 2560 LPRINT "  MUF(MHz)    UTC";
  250. 2570 FOR I=0 TO 55 STEP 5
  251. 2580 LPRINT TAB(19+I) I;
  252. 2590 NEXT
  253. 2600 LPRINT "  ========    ===";
  254. 2610 LPRINT TAB(20) "|====|====|====|====|====|====|====|====|====|====|====|="
  255. 2620 RETURN
  256. 2630 REM ***CALCULATION OF SUNSPOT NUMBER FROM SOLAR FLUX***
  257. 2640 S9=-103.7767+1.797429*SF-(3.384356E-03)*SF^2+(4.525515E-06)*SF^3
  258. 2650 S9=INT(100*S9+.5)/100
  259. 2660 RETURN
  260. 2670 REM   ***PATH OPTION LAT/LON***
  261. 2680 L1=41.9:W1=73.9:T$=CS$ : REM  ***USE VALUES FOR YOUR STATION***
  262. 2690 IF CH=1 THEN L2=38:W2=122:R$="to San Francisco":GOTO 720
  263. 2700 IF CH=2 THEN L2=-23:W2=44:R$="to Rio de Janeiro":GOTO 720
  264. 2710 IF CH=3 THEN L2=-35:W2=58:R$="to Buenos Aires":GOTO 720
  265. 2720 IF CH=4 THEN L2=-12:W2=77:R$="to Lima, Peru":GOTO 720
  266. 2730 IF CH=5 THEN L2=22:W2=158:R$="to Hawaii":GOTO 720
  267. 2740 IF CH=6 THEN L2=36:W2=-140:R$="to Japan":GOTO 720
  268. 2750 IF CH=7 THEN L2=-34:W2=-151:R$="to Sydney, Australia":GOTO 720
  269. 2760 IF CH=8 THEN L2=22:W2=-88:R$="to Calcutta, India":GOTO 720
  270. 2770 IF CH=9 THEN L2=49:W2=-2:R$="to Paris":GOTO 720
  271. 2780 IF CH=10 THEN L2=52:W2=-21:R$="to Warsaw":GOTO 720
  272. 2790 IF CH=11 THEN L2=56:W2=-38:R$="to Moscow":GOTO 720
  273. 2800 IF CH=12 THEN L2=37:W2=-10:R$="to Tunis":GOTO 720
  274. 2810 IF CH=13 THEN L2=+6:W2=+8 :R$="to Liberia":GOTO 720
  275. 2820 IF CH=14 THEN L2=-2:W2=-37:R$="to Kenya":GOTO 720
  276. 2830 IF CH=15 THEN L2=-26:W2=-28:R$="to Pretoria":GOTO 720
  277. 2840 IF CH=16 THEN R$="Receiver":GOTO 650
  278. 3000 IF W1=W2 GOTO 3100 :  REM ***Special geographic cases***
  279. 3010 JJ=1/TAN((W1-W2)/2)
  280. 3020 KK=(L2-L1)/2:LL=(L2+L1+1/2^50)/2
  281. 3030 PP=ATN(JJ*COS(KK)/SIN(LL)):QQ=ATN(JJ*SIN(KK)/COS(LL)):IF (L1+L2)<0 THEN PP=PP-PI
  282. 3040 XX=CINT((PP-QQ)/R0)
  283. 3050 IF XX<0 THEN 3090
  284. 3060 W$="east of true north."
  285. 3070 DIS=CINT((138/R0)*ABS(ATN(TAN(KK)*SIN(PP)/SIN(QQ+1/2^50))))
  286. 3080 RETURN
  287. 3090 W$="west of true north.":XX=-XX:GOTO 3070
  288. 3100 IF L1=L2 THEN FL1=1:GOTO 3080
  289. 3110 IF L1>L2 THEN FL1=2 ELSE FL1=3
  290. 3120 DIS=CINT((ABS(L1-L2))*138/(2*R0)):GOTO 3080
  291. 3200 IF FL1=1 THEN PRINT"Transmitter and receiver at same location."
  292. 3210 IF FL1=1 AND LP=1 THEN LPRINT"Transmitter and receiver at same location."
  293. 3220 IF FL1=2 THEN PRINT"BEARING: Due South";TAB(40) "DISTANCE: ";DIS;" miles."
  294. 3230 IF FL1=2 AND LP=1 THEN LPRINT"BEARING: Due South";TAB(40) "DISTANCE: ";DIS;" miles."
  295. 3240 IF FL1=3 THEN PRINT"BEARING: Due North";TAB(40) "DISTANCE: ";DIS;" miles."
  296. 3250 IF FL1=3 AND LP=1 THEN LPRINT"BEARING: Due North";TAB(40) "DISTANCE: ";DIS;" miles."
  297. 3260 IF FL1=0 THEN PRINT"BEARING: ";XX;" degrees ";W$:PRINT"DISTANCE: ";DIS;" miles."
  298. 3270 IF FL1=0 AND LP=1 THEN LPRINT"BEARING: ";XX;" degrees ";W$:LPRINT"DISTANCE: " ;DIS;" miles."
  299. 3280 RETURN
  300. 3300 PRINT:PRINT"Your choice: (N)ext case, Quit to (B)ASIC or (D)OS?   HIT N, B, or D."
  301. 3310 NK$=INKEY$
  302. 3320 IF NK$="" GOTO 3310
  303. 3330 IF NK$="N" OR NK$="n" THEN CLS:GOTO 310
  304. 3340 IF NK$="B" OR NK$="b" THEN CLS:END
  305. 3350 IF NK$="D" OR NK$="d" THEN CLS:SYSTEM
  306. 3360 PRINT:PRINT"Try again.":PRINT:GOTO 3300
  307. 4000 REM  ***Banner subroutine***
  308. 4001 SCREEN 100:COLOR 0:CLS:KEY OFF
  309. 4002 XS=6:YS=6:DIM P(640,16)
  310. 4004 LOCATE 1,1:PRINT"MUF & BEARING"
  311. 4006 P=640/XS
  312. 4008 FOR X=0 TO P:FOR Y=0 TO 15
  313. 4010 P(X,Y)=POINT(X,Y):NEXT:NEXT
  314. 4012 CLS:COLOR 15:FOR X=0 TO P:FOR Y=0 TO 15
  315. 4014 IF P(X,Y)=0 THEN C=0 ELSE C=1
  316. 4016 LINE(X*XS,Y*YS)-(X*XS+XS,Y*YS+YS),C,BF
  317. 4018 NEXT:NEXT
  318. 4020 PI=3.14159:X=1:Y=.9
  319. 4022 CIRCLE (320,800),600,1,X,PI-X:LINE(0,393)-(639,393):PAINT (320,370)
  320. 4024 CIRCLE (320,250),100,1,Y,PI-Y
  321. 4026 LINE (39,335)-(256,189)
  322. 4028 LINE (601,335)-(384,189)
  323. 4030 LINE (39,335)-(60,365):LINE (39,335)-(47,372):LINE (50,350)-(47,372):LINE (43,353)-(60,365)
  324. 4032 LINE (601,335)-(580,365):LINE(601,335)-(593,372):LINE(590,350)-(593,372):LINE(597,353)-(580,365)
  325. 4040 CIRCLE (320,800),760:CIRCLE (320,800),810
  326. 4042 LOCATE 13,8:PRINT "F LAYER": LOCATE 13,64:PRINT"IONOSPHERE"
  327. 4043 LOCATE 24,9:PRINT " KE1D ";:LOCATE 24,66:PRINT " CQ DX ";
  328. 4045 FOR N=1 TO 3
  329. 4050 FOR X=20 TO 280 STEP 20:CIRCLE (39,335),X,1,.58,.82:NEXT
  330. 4051 CIRCLE (-170,300),480,1,.25,.4:LINE (320,140)-(320,200),1:CIRCLE (-220,50),592,1,5.97,6.07
  331. 4052 FOR X=0 TO 280 STEP 20:CIRCLE (0,-50),480+X,1,5.56,5.67:NEXT
  332. 4055 FOR X=20 TO 280 STEP 20:CIRCLE (39,335),X,0,.58,.82:NEXT
  333. 4056 CIRCLE (-170,300),480,0,.25,.4:LINE (320,140)-(320,200),0:CIRCLE (-220,50),592,0,5.97,6.07
  334. 4057 FOR X=0 TO 280 STEP 20:CIRCLE (0,-50),480+X,0,5.56,5.67:NEXT
  335. 4060 NEXT
  336. 4090 RETURN
  337. 4490 RETURN
  338.